💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    Django(todoList) 1 설치 | ✅ 저자: 이유정(박사)

    🔗 todoList

    [feat] django (Day 1)
    - context data 
    - Template Tags 
    - Template for 
    - Template if endif
    

    🔗 [[Django_basic/Django_공식문서-깃허브업뎃용/1. 공식문서를 통한 장고설치/1. 공식문서를 통한 장고 설치]] 🔗 [[Django_basic/Django_공식문서-깃허브업뎃용/2. Part1/Part 1]]


    🔗소스


    ✅ 1단계: 프로젝트 디렉터리로 이동: mysite/startproject 명령으로 생성한 프로젝트 루트입니다.

    # 디렉터리 생성
    mkdir todoList
    
    # 해당 디렉터리로 이동
    cd todoList
    
    # 가상환경 설정
    python3 -m venv venv
    source venv/bin/activate
    
    # 패키지 설치
    pip install django
    pip install djangorestframework
    

    ✅ 2단계: 프로젝트 생성 & 앱 생성

    # Django 프로젝트 생성 (주의: . 을 붙이면 현재 폴더에 생성됨)
    django-admin startproject config .
    
    # 앱 생성 (예: 할 일 관리용 앱 todo)
    python manage.py startapp todo
    

    ✅ 생성 후 구조

    todoList/
    ├── config/             # ← settings.py 있는 메인 프로젝트
    ├── todo/               # ← 새로 만든 앱
    ├── manage.py
    ├── venv/
    └── requirements.txt
    

    ✅ 용어 설명

    용어
    라우팅 (Routing) 사용자가 웹 주소에 접근했을 때, 어떤 함수(또는 화면)가 실행될지 길을 지정하는 것
    path() 특정 URL 주소에 대해 실행할 내용을 설정하는 Django의 함수
    include() 다른 앱(todo)의 URL들을 불러와서 현재 URL에 붙이는 역할
    urlpatterns 주소와 실행할 기능들을 모아둔 URL 목록

    config/settings.py

    INSTALLED_APPS = [
        'todo',
        'rest_framework',
    ]
    

    todo > models.py

    from django.db import models
    
    class Todo(models.Model):
    	name = models.CharField(max_length=100)
    	description = models.TextField(blank=True)
    	complete = models.BooleanField(default=False)
    	exp = models.PositiveIntegerField(default=0)
    	completed_at = models.DateTimeField(null=True, blank=True)
    	created_at = models.DateTimeField(auto_now_add=True)
    	updated_at = models.DateTimeField(auto_now=True)
    
    	def __str__(self):
    		return self.name
    

    DB테이블 생성

    python manage.py makemigrations
    python manage.py migrate
    

    관리자생성

    python manage.py createsuperuser
    

    ✅ 라우팅(Routing) config > urls.py

    from django.contrib import admin 
    from django.urls import path, include
    from django.shortcuts import redirect
    
    urlpatterns = [
    	path('admin/', admin.site.urls),
    	path("todo/", include("todo.urls")), 
    	path('', lambda request: redirect('todo_List')),
    ]
    

    todo > urls.py

    # todo > urls.py
    from django.urls import path
    from . import views
    
    # 127.0.0.1:8000/todo/
    urlpatterns = [
    	path("list/", views.todo_list, name="todo_List"), 
    	#데이터 작동 테스트용
    ]
    

    todo > views.py 테스트용

    from django.shortcuts import render
    from .models import Todo
    from django.views import View 
    
    def todo_list(request): # 테스트용 함수형
    	todos = Todo.objects.all()
    	return render(request, "todo/todo.html", {"todos": todos})
    
    class TodoListView(View): # 클래스형
       def get(self, request):
           return render(request, "todo/create.html")
    
    
    from django.views.generic import ListView
    
    class TodoListView(ListView): # 제너릭뷰
        model = Todo
        template_name = "todo/todo.html"  # 기본값: todo_list.html
        context_object_name = "todos"     # 기본값: object_list
    

    todo/admin.py

    from django.contrib import admin
    from .models import Todo
    
    admin.site.register(Todo)
    

    admin에 접속하여 데이터를 입력한다.

    config/settings.py

    import os
    
    TEMPLATES = [
    	"DIRS": [os.path.join(BASE_DIR, "templates")],
    ]
    
    STATICFILES_DIRS = [
        BASE_DIR / "static",
    ]
    
    LANGUAGE_CODE = 'ko-kr'
    

    templates > todo > todo.html

    {% for todo in todos %}
        <p>{{ todo.name }}</p>
        <p>{{ todo.description }}</p>  
        <p>{{ todo.complete }}</p>
        <p>{{ todo.created_at }}</p>
        <p>-------------------------</p>
    
        {% if todo.description %}
            <p>{{ todo.description }}</p>
        {% else %}
            No description
        {% endif %}
            <p>{{ todo.complete }}</p>
            <p>{{ todo.created_at }}</p>
    {% endfor %}
    

    todo > admin.py

    from django.contrib import admin
    from .models import Todo
    
    admin.site.register(Todo) # 선택
    
    @admin.register(Todo) # 선택
    class TodoAdmin(admin.ModelAdmin):
    	list_display = (
    		"__str__",
    		"created_at",
    		"updated_at",
    	)
    

    .gitignore

    # Python 기본 캐시 및 가상환경 파일 제외
    venv/
    env/
    __pycache__/
    *.pyc
    *.pyo
    *.pyd
    
    # 환경 변수 파일 (보안 중요)
    .env
    # 개발중에만 사용
    
    # 데이터베이스 파일 제외 (SQLite 등)
    db.sqlite3
    *.sqlite3
    
    # Django 마이그레이션 캐시 제외
    **/migrations/*.pyc
    **/migrations/*.py
    !**/migrations/__init__.py
    
    # 로그 파일 제외
    *.log
    *.out
    *.err
    
    # 미디어 및 정적 파일 (수동 업로드 방지)
    # media/
    # staticfiles/
    # static/
    node_modules/
    
    # VS Code 및 IDE 설정 파일 제외
    .vscode/
    .idea/
    *.sublime-workspace
    
    # Docker 관련 파일 제외 (사용할 경우)
    docker-compose.override.yml
    

    README.md

    	# todoList
    	이 프로젝트는 Django 기반으로 만든 todoList입니다.
    	
    	## 주요 기능
    	- 회원가입/로그인
    	- 게시글 CRUD
    	
    	## 사용 기술
    	
    	### 백엔드
    	- Python, Django, Django ORM, Django Template Engine
    	- Django REST Framework (DRF)
    	- SQLite3 (개발용 DB)
    	
    	### 프론트엔드
    	- HTML5, CSS3, Bootstrap
    	- JavaScript, jQuery, Axios
    	- Django Template Tags
    	
    	### 테스트/디버깅
    	- Insomnia
    	
    	### 배포/운영
    	- AWS EC2
    	- Docker, docker-compose
    	- Nginx, Gunicorn
    
    TOP
    preload preload